2 - Portabilität [ID:31487]
50 von 64 angezeigt

Während der Übersicht über Systemprogrammierung in der ersten Tafelübung kam mir schon der

Punkt zur Sprache, dass wir von euch verlangen, portable Programme zu schreiben.

Jetzt wollen wir ein bisschen darauf eingehen, was überhaupt ein portables Programm ist.

Damit ein Programm portabel ist, muss es sich an eine definierte Schnittstelle halten.

Das hat zur Folge, dass das Programm überall da ausgeführt werden kann, wo diese Schnittstelle

implementiert ist.

Die Schnittstellen, an die wir uns in Systemprogrammierung richten, sind auf der einen Seite die Programmiersprache

C selbst, und zwar in der Version C11.

Hier wird der Sprachumfang der Sprache C definiert, sowie eine Liste der Standardbibliotheksfunktion

definiert.

Dazu gehören zum Beispiel die Printf-Funktion oder malloc.

Und wir halten uns an die Single Unix Specification, die eine Schnittstelle des Betriebssystems

vorgibt.

Diese Schnittstelle wird zum Beispiel implementiert durch verschiedene Unixe, zum Beispiel Solaris,

aber auch andere Betriebssysteme, zum Beispiel Mac OS, die verschiedenen BSD-Derivate, aber

auch Linux.

Damit können dann die Programme, die ihr in der Systemprogrammierung schreibt, unter

allen zuvor genannten Betriebssystemen ausgeführt werden.

Was in der Auflösung gefehlt hat, ist das Betriebssystem Windows von Microsoft.

Unter Windows ist es schwieriger, für die Single Unix Specification zu programmieren

und die Programme zur Ausführung zu bringen.

Auf der einen Seite fehlt es an einem C11-Compiler, da der von Microsoft bereitgestellte Compiler

kein C11 kann, aber dem kann man sich abhelfen, indem man einfach den GCC unter Windows verwendet.

Die Single Unix Specification ist hier schon das größere Problem, da diese von Microsoft

Windows nicht unterstützt wird.

Um sich da zu behelfen, kann man jedoch die Unix-Kompatibilitätsschicht Cyquin verwenden,

die die Betriebssystems-Schnittstelle zu Unix nachimplementiert.

Generell ist aber zu empfehlen, für die Entwicklung ein Linux-Betriebssystem zu nutzen.

Recht neu seit Windows 10 ist auch die Möglichkeit, die WSL zu verwenden.

Damit kann unter Windows ein vollwertiges Linux verwendet werden.

Da wir am Lehrstuhl aber nur wenig Erfahrung mit der WSL haben, fordern wir weiterhin

von euch, dass die ZIP-Rechner als Referenzsystem genutzt werden.

Das heißt, alle Programme, die ihr in SP schreibt, müssen auf den ZIP-Rechnern auf

der einen Seite kompilieren, aber auch richtig ausführbar sein.

Damit stellt sich die Frage, wie wir überhaupt durchsetzen, dass diese Anforderungen gewährleistet

sind.

Wir fordern von euch, dass ihr C11-Programme schreibt und dass ihr die Single-Unix-Specification

beachtet.

Um dies sicherzustellen, müsst ihr beim Aufruf des Compilers folgende Optionen mit angeben,

die den Compiler dazu anweisen, genau diese Anforderungen auch durchzusetzen.

Das heißt, wir setzen einmal bindestrich sd sgleich c11, damit nur c11-konforme Programme

erlaubt sind und mit der Option dx open source kann durchgesetzt werden, dass alle Aufrufe

ans Betriebssystem der Single-Unix-Specification entsprechen.

Ergänzend dazu verwenden wir die vorhin schon angemerkten Optionen bindestrich wall, damit

sämtliche Fehler hervorgehoben werden, und bindestrich werr, damit diese zu einem Programma-Abbuch

führen.

An der Stelle sei noch angemerkt, dass es sehr wohl wichtig ist, die Option wall für

Portabilität zu verwenden, denn wenn ihr die Warnings einschaltet, weist euch der Compiler

darauf hin, wenn ihr undefiniertes Verhalten in eurem Programm habt.

Und undefiniertes Verhalten kann sich zur Laufzeit beliebig manifestieren.

Teil einer Videoserie :
Teil eines Kapitels:
Dynamische Speicherverwaltung

Zugänglich über

Offener Zugang

Dauer

00:04:24 Min

Aufnahmedatum

2021-04-22

Hochgeladen am

2021-04-22 14:46:04

Sprache

de-DE

Einbetten
Wordpress FAU Plugin
iFrame
Teilen